/*
 * SingleDT.cpp - Grupo 5 - Prog. Avanzada 2011
 *
 *  Javier Dominguez - 4.901.161-6
 *  Marcelo Parada - 1.977.094-9
 *  Rodrigo Ruiz - 4.481.611-2
 *  Maximiliano Silvera - 4.106.938-6
 */

#include "SingleDT.h"

SingleDT::SingleDT()
{
	this->setArtistas(new ColConcrete<ArtistaDT*>());
}

SingleDT::SingleDT(int anioGrabacion, string titulo, Tiempo* tiempo)
{
	this->setAnioGrabacion(anioGrabacion);

	this->setTitulo(titulo); // Seteo los datos de TemaDT

	this->setTiempo(new Tiempo(tiempo)); // Seteo los datos de TemaDT

	this->setArtistas(new ColConcrete<ArtistaDT*>());
}

SingleDT::SingleDT(int id, int anioGrabacion, string titulo, Tiempo* tiempo)
{
	this->setId(id);

	this->setAnioGrabacion(anioGrabacion);

	this->setTitulo(titulo); // Seteo los datos de TemaDT

	this->setTiempo(new Tiempo(tiempo)); // Seteo los datos de TemaDT

	this->setArtistas(new ColConcrete<ArtistaDT*>());
}

int SingleDT::tipoTemaDT()
{
	return Single::TIPO_TEMA;
}

string SingleDT::toString()
{
	stringstream out;

	out << left;
	out << setw(6) << this->getId();
	out << setw(25) << this->getTitulo();
	out << setw(10) << this->getTiempo()->toString();
	out << setw(8) << this->getAnioGrabacion();
	out << setw(20) << "-";
	out << setw(6) << "-";

	return out.str();
}

bool SingleDT::same(ICollectible *icollectible)
{
	SingleDT *singleDT = (SingleDT*) icollectible;

	return this->getTitulo().compare(singleDT->getTitulo()) == 0;
}

int SingleDT::getAnioGrabacion() const
{
    return anioGrabacion;
}

void SingleDT::setAnioGrabacion(int anioGrabacion)
{
    this->anioGrabacion = anioGrabacion;
}

SingleDT::~SingleDT()
{
}
